package com.ruoyi.basedata.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basedata.domain.TerminalsDb;
import com.ruoyi.basedata.domain.TerminalsXb;
import com.ruoyi.basedata.domain.vo.TerminalsDbProtocol;
import com.ruoyi.basedata.wxentity.Terminals;
import com.ruoyi.common.core.domain.AjaxResult;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;

/**
 * 大档案Service接口
 *
 * @author ruoyi
 * @date 2023-09-07
 */
public interface ITerminalsDbService extends IService<TerminalsDb> {
    /**
     * 查询大档案
     *
     * @param Id 大档案主键
     * @return 大档案
     */
    public TerminalsDb selectTerminalsDbById(Long Id);

    /**
     * 查询大档案列表
     *
     * @param terminalsDb 大档案
     * @return 大档案集合
     */
    public List<TerminalsDb> selectTerminalsDbList(TerminalsDb terminalsDb);

    List<TerminalsDbProtocol> selectTerminalsDbProtocolList(TerminalsDb terminalsDb);

    /**
     * 新增大档案
     *
     * @param terminalsDb 大档案
     * @return 结果
     */
    public int insertTerminalsDb(TerminalsDb terminalsDb);

    /**
     * 修改大档案
     *
     * @param terminalsDb 大档案
     * @return 结果
     */
    public int updateTerminalsDb(TerminalsDb terminalsDb);

    /**
     * 批量删除大档案
     *
     * @param Ids 需要删除的大档案主键集合
     * @return 结果
     */
    public int deleteTerminalsDbByIds(Long[] Ids);

    /**
     * 删除大档案信息
     *
     * @param Id 大档案主键
     * @return 结果
     */
    public int deleteTerminalsDbById(Long Id);


    boolean changeTerminalDb(TerminalsDb terminalsDb);

    String importUser(List<TerminalsDb> userList, Boolean isUpdateSupport, String operName);

    List<Terminals> selectWXTerminalsDbById(Long id);

    /**
     * AEP平台注册设备
     * @param appKey appKey
     * @param appSecret appSecret
     * @param masterKey masterKey
     * @param terminalsDb terminalsDb
     * @return 响应体
     */
    JSONObject createGuoXinDeviceInAep(String appKey, String appSecret, String masterKey, TerminalsDb terminalsDb);

    /**
     * OneNet平台注册设备
     * @param terminalsDb terminalsDb
     * @return 响应体
     * @throws Exception e
     */
    JSONObject createDeviceInOneNet(TerminalsDb terminalsDb) throws Exception;

    /**
     * 更新设备id
     * @param terminalsDb terminalsDb
     */
    void updateDeviceId(TerminalsDb terminalsDb);

    /**
     * 注销大用户表
     *
     * @param id 主键
     * @return boolean
     */
    boolean cancelTerminal(Long id);

}
